package com.xwq.smartgelleryhub.api.aliyunaiReshapingImage.model;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;

/**
 * 查询人像风格重塑任务响应类
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
public class GetImageRestyleTaskResponse {

    /**
     * 请求唯一标识
     */
    private String requestId;

    /**
     * 输出信息
     */
    private Output output;

    /**
     * 任务使用情况统计
     */
    private Usage usage;

    /**
     * 任务的输出信息
     */
    @Data
    public static class Output {
        /**
         * 任务 ID
         */
        private String taskId;

        /**
         * 任务状态
         * <ul>
         *     <li>PENDING：排队中</li>
         *     <li>RUNNING：处理中</li>
         *     <li>SUSPENDED：挂起</li>
         *     <li>SUCCEEDED：执行成功</li>
         *     <li>FAILED：执行失败</li>
         *     <li>UNKNOWN：任务不存在或状态未知</li>
         * </ul>
         */
        private String taskStatus;

        /**
         * 提交时间
         */
        private String submitTime;

        /**
         * 调度时间
         */
        private String scheduledTime;

        /**
         * 开始处理时间
         */
        private String startTime;

        /**
         * 结束时间
         */
        private String endTime;

        /**
         * 风格索引
         */
        private Integer styleIndex;

        /**
         * 任务错误码（仅在失败时返回）
         */
        private String errorCode;

        /**
         * 任务错误信息（仅在失败时返回）
         */
        private String errorMessage;

        /**
         * 任务结果列表（仅在成功时返回）
         */
        private List<Result> results;

        /**
         * 任务统计信息（可能在部分请求中返回）
         */
        private TaskMetrics taskMetrics;
    }

    /**
     * 任务结果信息
     */
    @Data
    public static class Result {
        /**
         * 生成的图片 URL
         */
        private String url;
    }

    /**
     * 任务统计信息
     */
    @Data
    public static class TaskMetrics {
        /**
         * 总任务数
         */
        private Integer total;

        /**
         * 成功任务数
         */
        private Integer succeeded;

        /**
         * 失败任务数
         */
        private Integer failed;
    }

    /**
     * 任务使用情况统计
     */
    @Data
    public static class Usage {
        /**
         * 生成的图片数量
         */
        private Integer imageCount;
    }
}
